/**
    @file ctc_at_acl.h

    @author  Copyright (C) 2011 Centec Networks Inc.  All rights reserved.

    @date 2022-03-28

    @version v0.0

    The module support the new feature of xData for flex data.xData can be based on these classifications,usch as:
\p
    Generate xData:ctc_xdata_set_profile()
    There are 10 types for xData and 5 for post xData. User can set mapping rules by type and profile id.
\p
    local xData:ctc_xdata_set_local()
    There are 6 types for local xData. User can set mapping rules by type.
\p
    Transmit xData:ctc_xdata_set_path()
    There are 7 types for local xData. User can not only set mapping rules by type and profile id, but also enalbe fixed mapping rules
\p
*/

#ifndef _CTC_AT_XDATA_H
#define _CTC_AT_XDATA_H
#ifdef __cplusplus
extern "C" {
#endif

#include "sal.h"
#include "ctc_xdata.h"

/**
 @brief     Init xdata module.

 @param[in] lchip    local chip id

 @param[in] xdata_global_cfg      Init parameter

 @remark[AT]    Init xdata module.

 @return CTC_E_XXX
*/    
extern int32
ctc_at_xdata_init(uint8 lchip, void* xdata_global_cfg);

/**
 @brief     DeInit xdata module.

 @param[in] lchip    local chip id

 @remark[AT]    Init xdata module.

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_deinit(uint8 lchip);

/**
 @brief     Set xdata profile.

 @param[in] lchip    local chip id

 @param[in] p_prof      Xdata profile info

 @remark[AT]  User can set xdata profile for other model

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_set_profile(uint8 lchip, ctc_xdata_prof_t* p_prof);

/**
 @brief     Get xdata profile.

 @param[in] lchip    local chip id

 @param[in|out] p_prof      Xdata profile info

 @remark[AT]  User can get xdata profile by type and prof_id

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_get_profile(uint8 lchip, ctc_xdata_prof_t* p_prof);

/**
 @brief     Set xdata local.

 @param[in] lchip    local chip id

 @param[in] p_local      Xdata local info

 @remark[AT]  User can set xdata local for other model

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_set_local(uint8 lchip, ctc_xdata_local_t* p_local);

/**
 @brief     Get xdata local.

 @param[in] lchip    local chip id

 @param[in|out] p_local      Xdata profile info

 @remark[AT]  User can get xdata profile by type

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_get_local(uint8 lchip, ctc_xdata_local_t* p_local);

/**
 @brief     Set xdata path.

 @param[in] lchip    local chip id

 @param[in] p_path      Xdata path info

 @remark[AT]  User can set xdata path

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_set_path(uint8 lchip, ctc_xdata_path_t* p_path);

/**
 @brief     Get xdata path.

 @param[in] lchip    local chip id

 @param[in|out] p_path      Xdata path info

 @remark[AT]  User can get xdata path by type and prof_id

 @return CTC_E_XXX
*/
extern int32
ctc_at_xdata_get_path(uint8 lchip, ctc_xdata_path_t* p_path);

#ifdef __cplusplus
}
#endif

#endif /*end of _CTC_AT_XDATA_H*/
